共计 896 个字符,预计需要花费 3 分钟才能阅读完成。
前言
今天在学习 MyBatis 的时候,使用 select 查询语句可以查出结果并准确无误,但是使用 insert 语句的时候无法插入,因为我使用的是 mysql 数据库,并且给主键 ID 设置了自动递增,在每次插入之后自动递增值都会 +1,不过数据库就是没有记录,我想应该是数据库事务没有提交的原因导致的。
解决办法
方案一
在进行了 insert
、update
、delete
等操作之后,在其后进行手动提交事务,例如:
public void addUser(User user) {SqlSession sqlSession = dbAccess.getSqlSession();
sqlSession.insert("User.addUser",user);
sqlSession.commit();
sqlSession.close();}
方案二
public SqlSession getSqlSession() {
// 拿到 MyBatis 配置文件,获取数据库连接信息
Reader reader = null;
try {reader = Resources.getResourceAsReader("mybatis-config.xml");
} catch (IOException e) {e.printStackTrace();
}
// 获取到数据库会话工厂 SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
// 打开一个数据库会话
return sqlSessionFactory.openSession(true);
}
后记
经过如上的操作之后,这时使用 MyBatis 进行增删改操作时候就不会出现之前的事务自动回滚问题了。